import request from '@/utils/request'

/**
 * author:孙克旭_泺栋
 * date:2025/10/03
 */

/**
 * 根据命名空间获取Deployment列表
 * @param {Object} query - 查询参数（包含namespace等）
 * @returns {Promise} - 返回请求的Promise对象
 */
export function getDeploymentList(query) {
  return request({
    url: '/deploy/', // 对应后端的 /deploy 接口
    method: 'get', // GET请求
    params: query // 查询参数通过params传递（如namespace）
  })
}

/**
 * 获取全部Deployment列表（跨所有命名空间）
 * @returns {Promise} - 返回请求的Promise对象
 */
export function getAllDeployments() {
  return request({
    url: '/deploy/all', // 对应后端的 /deploy/all 接口
    method: 'get' // GET请求
  })
}

/**
 * 创建Deployment
 * @param {Object} data - 创建Deployment的参数
 * @param {string} data.name - Deployment名称
 * @param {string} data.namespace - 命名空间
 * @param {number} data.replicas - 副本数量
 * @param {string} data.image - 容器镜像
 * @param {string} data.containerName - 容器名称
 * @param {Array} data.ports - 端口配置数组
 * @param {Array} data.env - 环境变量数组
 * @param {Object} data.labels - 标签对象
 * @returns {Promise} - 返回请求的Promise对象
 */
export function createDeployment(data) {
  return request({
    url: '/deploy/', // 对应后端的 /deploy/ 接口
    method: 'post', // POST请求
    data: data // 请求体数据
  })
}

/**
 * 更新Deployment（修改副本数量和镜像）
 * @param {Object} data - 更新Deployment的参数
 * @param {string} data.name - Deployment名称
 * @param {string} data.namespace - 命名空间
 * @param {number} data.replicas - 新的副本数量
 * @param {string} data.image - 新的容器镜像
 * @returns {Promise} - 返回请求的Promise对象
 */
export function updateDeployment(data) {
  return request({
    url: '/deploy/', // 对应后端的 /deploy 接口
    method: 'put', // PUT请求
    data: data // 请求体数据
  })
}

/**
 * 删除Deployment
 * @param {string} name - 要删除的Deployment名称
 * @param {string} namespace - Deployment所在的命名空间
 * @returns {Promise} - 返回请求的Promise对象
 */
export function deleteDeployment(name, namespace) {
  return request({
    url: '/deploy/', // 对应后端的 /deploy 接口
    method: 'delete', // DELETE请求
    params: { // DELETE请求参数通过params传递
      name: name,
      namespace: namespace
    }
  })
}

/**
 * 扩缩容Deployment（调整副本数量）
 * @param {string} namespace - 命名空间
 * @param {string} name - Deployment名称
 * @param {number} replicas - 目标副本数量
 * @returns {Promise} - 返回请求的Promise对象
 */
export function scaleDeployment(namespace, name, replicas) {
  return updateDeployment({
    name: name,
    namespace: namespace,
    replicas: replicas
    // 注意：scale操作通常只修改replicas，不修改image
  })
}

/**
 * 更新Deployment镜像
 * @param {string} namespace - 命名空间
 * @param {string} name - Deployment名称
 * @param {string} image - 新的容器镜像
 * @returns {Promise} - 返回请求的Promise对象
 */
export function updateDeploymentImage(namespace, name, image) {
  return updateDeployment({
    name: name,
    namespace: namespace,
    image: image
    // 注意：更新镜像时通常保持原有replicas不变
  })
}

/**
 * 获取命名空间列表（用于下拉选择）
 * 这个函数可以复用之前的namespace接口
 * @returns {Promise} - 返回请求的Promise对象
 */
export function getNamespaceList() {
  return request({
    url: '/namespace/list',
    method: 'get'
  })
}

